Over the past several years, data processing systems have migrated towards client-server and distributed models. As a result, more devices are today being interconnected by both local area networks and wide area networks which require various levels of bi-directional communication to allow remote configuration and monitoring of connected devices. However, many peripheral devices (e.g. laser printers, ink jet printers, plotters, etc.) still contain what are essentially unidirectional parallel and serial interfaces. The serial interfaces are bidirectional but are generally very slow. Parallel interfaces are generally unidirectional. Thus, with many prior art peripheral devices, configuration data cannot be communicated to a host via a parallel interface.
Even peripherals having a bidirectional parallel port still have a substantially constricted ability to receive configuration and other command data from a host processor. For instance, some laser printers are unable to receive a command from a host processor if a print job is in process of being printed via the parallel port. Until the print job is complete, the printer can neither receive nor respond to a control inquiry or command.
Packetizing of data allows a stream of data to be logically broken into smaller chunks in such a fashion as to enable multiple independent data streams to be transmitted over the same physical medium at the same time. This is achieved by interleaving packets of one stream with packets from another. Because address information (source and destination) is included with each packet, the packets can be successfully routed to an appropriate receiving unit.
As applied to host/peripheral communications, packets containing queries about a peripheral's state can be interleaved with packets containing peripheral data. When packets are received by the peripheral unit, address information is removed and used to route packets containing the peripheral data to a parser and packets containing queries concerning a peripheral's state to a processor which handles such inquiries. Thus, using a packetized data transmission scheme, interrogation and control of a peripheral unit are enabled to occur at almost any time during the processing of peripheral data.
When employing a packetized data flow to communicate between a host processor and a peripheral unit, the protocol must include some means for coping with the fact that the peripheral unit is generally provided with limited memory space. Further, if the peripheral unit is required to interface with a plurality of host processors, it must have some means of allocating the memory space among the competing host processors. In the prior art, the memory allocation function has been relegated to the peripheral unit so that upon determining that a host processor has a pending request to communicate, the peripheral unit allocates a certain memory size to the host processor--thereby enabling a commencement of communications. If the host processor requires additional memory space, it is required to wait for the peripheral unit to grant another block of memory space--before continuing communications. Furthermore, if the host processor completes a transmission to the peripheral unit and has not used all of the memory allocated by the peripheral unit, the host processor has no mechanism for relinquishing the unused memory space back to the peripheral unit until and unless the connection between the peripheral unit and host processor is broken.
Accordingly, it is an object of this invention to provide an improved packetized data communication procedure between a host processor and a peripheral unit.
It is another object of this invention to provide an improved packetized communication procedure wherein a source can request allocation of a specific amount of memory from a destination.
It is yet another object of this invention to provide an improved packetized communication procedure between a source and destination wherein the destination is enabled to unilaterally relinquish allocated memory space to the source.